package net.miz_hi.smileessence.dialog; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.util.DisplayMetrics; import android.view.Gravity; import android.view.View; import android.view.WindowManager.LayoutParams; import android.widget.ListView; import net.miz_hi.smileessence.Client; import net.miz_hi.smileessence.command.IHideable; import net.miz_hi.smileessence.command.MenuCommand; import net.miz_hi.smileessence.menu.MenuListAdapter; import net.miz_hi.smileessence.preference.EnumPreferenceKey.EnumValueType; import net.miz_hi.smileessence.preference.PreferenceHelper; import java.util.ArrayList; import java.util.List; public abstract class SimpleMenuDialog extends MenuDialog { protected View titleView; protected String title; public SimpleMenuDialog(Activity activity) { super(activity); } public SimpleMenuDialog(Activity activity, String title) { super(activity); this.title = title; } public void setTitle(View view) { titleView = view; } public View getTitleView() { return titleView; } public void setTitle(String title) { this.title = title; } public abstract List<MenuCommand> getMenuList(); public Dialog create() { dispose(); AlertDialog.Builder builder = new AlertDialog.Builder(activity); if (titleView == null) { builder.setTitle(title); } else { builder.setCustomTitle(titleView); } List<MenuCommand> list1 = getMenuList(); List<MenuCommand> list2 = new ArrayList<MenuCommand>(); for (MenuCommand command : list1) { boolean isEnabled = true; if (command instanceof IHideable) { PreferenceHelper pref = Client.getPreferenceHelper(); isEnabled = pref.getPreferenceValue(command.getClass().getSimpleName(), EnumValueType.BOOLEAN, false); } if (command.getDefaultVisibility() && isEnabled) { list2.add(command); } } ListView listview = new ListView(activity); MenuListAdapter adapter = new MenuListAdapter(activity); adapter.addAll(list2); adapter.forceNotifyAdapter(); listview.setAdapter(adapter); builder.setView(listview); dialog = builder.create(); LayoutParams lp = dialog.getWindow().getAttributes(); DisplayMetrics metrics = activity.getResources().getDisplayMetrics(); lp.width = (int) (metrics.widthPixels * 0.9); lp.gravity = Gravity.CENTER; lp.height = (int) (metrics.heightPixels * 0.8); return dialog; } }